package com.kkb.kkbportal.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.kkb.kkbportal.domain.dto.UserDto;
import com.kkb.kkbportal.domain.ums.User;

import java.util.List;

public interface UserService extends IService<User> {

    /**
     * 根据手机号进行查询用户
     *
     * @param phoneNumber 手机号码
     */
    User selectByPhoneNumber(String phoneNumber);

    /**
     * 根据传入的手机号和密码进行登录验证
     *
     * @param condition 条件
     */
    void userLogin(User condition);

    /**
     * 根据传入的手机号和密码进行注册验证插入
     *
     * @param condition 注册的用户信息
     */
    void userRegister(User condition);

    /**
     * 根据用户id查询用户信息
     *
     * @param id 用户id
     * @return 用户信息
     */
    User selectUserById(Long id);

    /**
     * 根据id删除用户
     *
     * @param id 用户id
     */
    void deleteById(Long id);

    /**
     * 根据id修改用户信息
     *
     * @param id   用户id
     * @param user 修改后的用户信息
     */
    void updateById(Long id, User user);

    /**
     * @param phoneNumber
     * @param password
     * @return
     */
    Boolean passwordIsRight(String phoneNumber, String password);

    /**
     * 根据条件查询用户数据
     *
     * @param condition
     * @return
     */
    List<User> selectByCondition(User condition);

    /**
     * 可以根据条件查询分页用户数据
     *
     * @param condition 条件
     * @param pageNum   当前页码
     * @param pageSize  每页页数
     */
    PageInfo<User> selectPage(User condition, Integer pageNum, Integer pageSize);

    /**
     * 根据用户 id 和角色 id 添加用户角色关系
     *
     * @param uid 用户id
     * @param rid 角色id
     * @return 返回查询到的结果id
     */
    void selectRoleByUserId(Long uid, Long rid);

    /**
     * 根据传入手机号发送验证码
     *
     * @param phoneNumber 手机号
     */
    void forgetPassword(String phoneNumber);

    /**
     * 根据手机号和验证码登录
     *
     * @param phoneNumber 手机号
     * @param code        验证码
     * @return 登录用户对象
     */
    User smsCodeVerify(String phoneNumber, String code);


    /**
     * 根据导师/学员id，查询基本个人信息
     *
     * @param id 导师/学员id
     * @return 基本个人资料
     * @author syt group-1
     */
    UserDto selectUserInfoById(Long id);
}
